#include<bits/stdc++.h>
using namespace std;

class Solution {
public:
    string pushDominoes(string dominoes) {
        string temp = "L";
        temp += dominoes;
        temp += 'R';
        for(int i = 0; i + 1 < temp.length(); i++){
            if(temp[i] == 'L'){
                int j = i + 1;
                for(; j < temp.length(); j++){
                    if(temp[j] == 'L'){
                        for(; i < j; i++)temp[i] = 'L';
                        break;
                    }
                    if(temp[j] == 'R'){
                        i = j;
                        break;
                    }
                }
                i--;
            }
            else if(temp[i] == 'R'){
                int j = i + 1;
                for(; j < temp.length(); j++){
                    if(temp[j] == 'L'){
                        int num = j - i - 1;
                        if(num <= 1){
                            i = j;
                            break;
                        }
                        if(num % 2){
                            num = (i + j) / 2;
                            for(; i < num; i++)temp[i] = 'R';
                            i++;
                            for(; i < j; i++)temp[i] = 'L';
                        }
                        else{
                            num = (i + j) / 2;
                            for(; i <= num; i++)temp[i] = 'R';
                            for(; i < j; i++)temp[i] = 'L';
                        }
                        break;
                    }
                    else if(temp[j] == 'R'){
                        for(; i < j; i++)temp[i] = 'R';
                        break;
                    }
                }
                i--;
            }
        }
        return temp.substr(1, dominoes.length());
    }
};
/**
 * @brief 2022.2.21
 * 写的像屎一样
 * 模拟：开始在字符串左边加上 'L'，右边加上 'R'，然后分情况讨论：
 * 左边 L 右边 R : 中间没有影响
 * 左边 L 右边 L : 中间全是 L
 * 左边 R 右边 R : 中间全是 R
 * 左边 R 右边 L : 中间 R 一半 L 一半，根据夹着的 . 的数量决定最中间是什么
 */